<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" xml:lang="en" version="3.0.0">
  <xsd:annotation>
    <xsd:appinfo source="urn:opengis:specification:gml:schema-coordinateSystems:v3.0.0"/>
    <xsd:documentation>
      <name>coordinateSystems.xsd</name>
      <version>3.0</version>
      <scope>How to encode coordinate system definitions. </scope>
      <description>Builds on referenceSystems.xsd to encode the data needed to define coordinate systems, including the specific subtypes of coordinate systems. GML 3.0 candidate schema, primary editor: Arliss Whiteside. Last updated 2002/11/21. </description>
      <copyright>Copyright (c) 2001-2002 OpenGIS, All Rights Reserved.</copyright>
      <conformance>This schema encodes the Coordinate System (CS_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex B of Topic 2. </conformance>
    </xsd:documentation>
  </xsd:annotation>
  <!-- ==============================================================
       includes and imports
	============================================================== -->
  <xsd:include schemaLocation="referenceSystems.xsd"/>
  <!-- ==============================================================
       elements and types
	============================================================== -->
  <xsd:element name="CoordinateSystemAxis" type="gml:CoordinateSystemAxisType" substitutionGroup="gml:_CRSObject"/>
  <!-- =========================================================== -->
  <xsd:complexType name="CoordinateSystemAxisType">
    <xsd:annotation>
      <xsd:documentation>Definition of a coordinate system axis. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCRSObjectType">
        <xsd:sequence>
          <xsd:element name="axisID" type="gml:IdentifierType" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation>Identification of this coordinate system axis. </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="axisAbbrev" type="string">
            <xsd:annotation>
              <xsd:documentation>The abbreviation used for this coordinate system axis. This abbreviation can be used to identify the ordinates in a coordinate tuple. Examples are X and Y. </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="axisDirection" type="string">
            <xsd:annotation>
              <xsd:documentation>Direction of this coordinate system axis (or in the case of Cartesian projected coordinates, the direction of this coordinate system axis at the origin). Examples: north or south, east or west, up or down. Within any set of coordinate system axis, only one of each pair of terms can be used. </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="uom" type="anyURI" use="required">
          <xsd:annotation>
            <xsd:documentation>Identifier of the unit of measure used for this coordinate system axis. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="coordinateSystemAxisRef" type="gml:CoordinateSystemAxisRefType"/>
  <!-- =========================================================== -->
  <xsd:complexType name="CoordinateSystemAxisRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Coordinate System Axis, either referencing or containing the definition of that Coordinate System Axis. </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element ref="gml:CoordinateSystemAxis" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
  </xsd:complexType>
  <!-- =========================================================== -->
  <!-- =========================================================== -->
  <xsd:element name="_CoordinateSystem" type="gml:AbstractCoordinateSystemType" abstract="true" substitutionGroup="gml:_CRSObject"/>
  <!-- =========================================================== -->
  <xsd:complexType name="AbstractCoordinateSystemType" abstract="true">
    <xsd:annotation>
      <xsd:documentation>A coordinate system (CS) is the set of coordinate system axes that spans a given coordinate space. A CS is derived from a set of (mathematical) rules for specifying how coordinates in a given space are to be assigned to points. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCRSObjectType">
        <xsd:sequence>
          <xsd:element name="csID" type="gml:IdentifierType">
            <xsd:annotation>
              <xsd:documentation>Identification of this coordinate system. </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="usesAxis" type="gml:CoordinateSystemAxisRefType" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation>Associations to ordered list of Coordinate System Axes. </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="coordinateSystemRef" type="gml:CoordinateSystemRefType"/>
  <!-- =========================================================== -->
  <xsd:complexType name="CoordinateSystemRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element ref="gml:_CoordinateSystem" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="EllipsoidalCS" type="gml:EllipsoidalCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="EllipsoidalCSType">
    <xsd:annotation>
      <xsd:documentation>A two- or three-dimensional coordinate system in which position is specified by geodetic latitude, geodetic longitude, and (in the three-dimensional case) ellipsoidal height. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="ellipsoidalCSRef" type="gml:EllipsoidalCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="EllipsoidalCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to an Ellipsoidal Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:EllipsoidalCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="CartesianCS" type="gml:CartesianCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="CartesianCSType">
    <xsd:annotation>
      <xsd:documentation>A 1-, 2-, or 3-dimensional coordinate system. Gives the position of points relative to orthogonal straight axes in the 2- and 3-dimensional cases. In the 1-dimensional case, it contains a single straight coordinate axis. In the multi-dimensional case, all axes shall have the same length unit of measure. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="cartesianCSRef" type="gml:CartesianCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="CartesianCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Cartesian Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:CartesianCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="GravityRelatedCS" type="gml:GravityRelatedCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="GravityRelatedCSType">
    <xsd:annotation>
      <xsd:documentation>A one-dimensional coordinate system used to record the heights (or depths) of points dependent on the Earth's gravity field. An exact definition is deliberately not provided as the complexities of the subject fall outside the scope of this specification. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="gravityRelatedCSRef" type="gml:GravityRelatedCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="GravityRelatedCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Gravity Related Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:GravityRelatedCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="TemporalCS" type="gml:TemporalCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="TemporalCSType">
    <xsd:annotation>
      <xsd:documentation>A 1-dimensional coordinate system containing a single time axis, used to describe the temporal position of a point in the specified time units from a specified time origin. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="temporalCSRef" type="gml:TemporalCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="TemporalCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Temporal Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:TemporalCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="LinearCS" type="gml:LinearCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="LinearCSType">
    <xsd:annotation>
      <xsd:documentation>A coordinate system that is one-dimensional and consists of the points that lie on the single axis described. The associated ordinate is the distance from the specified origin to the point along the axis. Example: usage of the line feature representing a road to describe points on or along that road. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="linearCSRef" type="gml:LinearCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="LinearCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Linear Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:LinearCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="UserDefinedCS" type="gml:UserDefinedCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="UserDefinedCSType">
    <xsd:annotation>
      <xsd:documentation>A two- or three-dimensional coordinate system that consists of any combination of coordinate axes not covered by any other Coordinate System type. An example is a multilinear coordinate system which contains one coordinate axis that may have any 1-D shape which has no intersections with itself. This non-straight axis is supplemented by one or two straight axes to complete a 2 or 3 dimensional coordinate system. The non-straight axis is typically incrementally straight or curved. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="userDefinedCSRef" type="gml:UserDefinedCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="UserDefinedCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a User Defined Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:UserDefinedCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="SphericalCS" type="gml:SphericalCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="SphericalCSType">
    <xsd:annotation>
      <xsd:documentation>A three-dimensional coordinate system with one distance measured from the origin and two angular coordinates. Not to be confused with an ellipsoidal coordinate system based on an ellipsoid "degenerated" into a sphere. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="sphericalCSRef" type="gml:SphericalCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="SphericalCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Spherical Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:SphericalCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="PolarCS" type="gml:PolarCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="PolarCSType">
    <xsd:annotation>
      <xsd:documentation>A two-dimensional coordinate system in which position is specified by the distance to the origin and the angle between the line from the origin to a point and a reference direction. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="polarCSRef" type="gml:PolarCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="PolarCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Polar Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:PolarCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="CylindricalCS" type="gml:CylindricalCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="CylindricalCSType">
    <xsd:annotation>
      <xsd:documentation>A three-dimensional coordinate system consisting of a polar coordinate system extended by a straight coordinate axis perpendicular to the plane spanned by the polar coordinate system. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="cylindricalCSRef" type="gml:CylindricalCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="CylindricalCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to a Cylindrical Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:CylindricalCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="ObliqueCartesianCS" type="gml:ObliqueCartesianCSType" substitutionGroup="gml:_CoordinateSystem"/>
  <!-- =========================================================== -->
  <xsd:complexType name="ObliqueCartesianCSType">
    <xsd:annotation>
      <xsd:documentation>A coordinate system with straight lines that are not necessarily orthogonal. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="gml:AbstractCoordinateSystemType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <!-- =========================================================== -->
  <xsd:element name="obliqueCartesianCSRef" type="gml:ObliqueCartesianCSRefType" substitutionGroup="gml:coordinateSystemRef"/>
  <!-- =========================================================== -->
  <xsd:complexType name="ObliqueCartesianCSRefType">
    <xsd:annotation>
      <xsd:documentation>Association to an Oblique Cartesian Coordinate System, either referencing or containing the definition of that Coordinate System. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:restriction base="gml:CoordinateSystemRefType">
        <xsd:sequence>
          <xsd:element ref="gml:ObliqueCartesianCS" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
</xsd:schema>
